perm filename TEST2[1,DBL] blob
sn#016203 filedate 1972-12-12 generic text, type T, neo UTF8
00100 BEGIN
64200 EXPR REC2(FN,A,N,RELATEDF);
64300 BEGIN NEW I,II,I1,I2,KK,JJ1,JJ2;
64400 EE1←NIL;
64500 EE2 ← NIL;
64600 L1← NIL;
64700 L2 ← NIL;
64800 E←NIL;
64900 MA←T;
65000 MN←T;
65100 MAL←T;
65200 MA2 ←T;
65300 MN2←T;
65400 MAL2←T;
65500 E1←NIL;
65600 E2←NIL;
65700 EXAMPLE[NEX+2,1]←L;
65800 FOR NEW X←1 TO NEX+1 DO BEGIN
65900 E1← EXAMPLE[X+1,1,1];
66000 E2← EXAMPLE[X+1,1,2];
66100 MA← MA AND ATOM(E1);
66200 MA2← MA2 AND ATOM(E2);
66300 MN ← MN AND NUMBER(E1);
66400 MN2 ← MN2 AND NUMBER(E2);
66500 MAL ← MAL AND ANYLIST(E1);
66600 MAL2 ← MAL2 AND ANYLIST(E2);
66700 END;
66800 I← '(ANY ANY);
66900 IF MAL THEN I[1] ← 'ANYLIST;
67000 IF MAL2 THEN I[2] ← 'ANYLIST;
67100 IF MA THEN I[1] ← 'ATOM;
67200 IF MA2 THEN I[2] ← 'ATOM;
67300 IF MN THEN I[1] ← 'NUMBER;
67400 IF MN2 THEN I[2] ← 'NUMBER;
67500 PUTPROP ('FN2, I, 'TARGS);
67600 PUTPROP ('FN2, 2, 'NARGS);
67700 PUTPROP ('FN2, 'ANY, 'TRES);
67800 IHOLD← I;
67900 PRINTSTR '"DO YOU KNOW THE TYPE OF ARGUMENTS FOR THE FN?
68000 MY GUESS IS";
68100 PRINC (IHOLD);
68200 PRINTSTR '" ANSWER N MEANS GUESS IS OK,
68300 ANSWER Y MEANS YOU WANT TO CHANGE MY GUESS ...";
68400 I←READ();
68500 IF I='Y THEN BEGIN
68600 PRINTSTR '"TYPE IN TWO OF THE WORDS:
68700 ANY ANYLIST NUMBER LISTP
68800 ( LISTP MEANS A NONNULL LIST)...";
68900 I ← READ();
69000 II ← READ();
69100 IHOLD ← <I,II>;
69200 PUTPROP('FN2, IHOLD, 'TARGS);
69300 END;
69400 FOR NEW K←1 TO 19 DO
69500 ORD[K]←INTERSECTION(RELATEDF[1]@RELATEDF[2]@<'FN2>
69600 @RELATEDF[3]@RELATEDF[4], ORDER2[K]);
69700 FOR NEW K←1 TO 19 DO
69800 ORD[K] ← RANK(K,ORD);
69900 PRINTSTR '"DO YOU WANT TO CUT DOWN THE POSSIBILITIES?";
70000 I←READ();
70100 IF I='Y THEN FOR NEW X←1 TO 19 DO
70200 BEGIN
70300 PRINT <'ORD,X,ORD[X]>;
70400 PRINTSTR '"NOW RETYPE THIS SECTION OF ORD:";
70500 I←READ();
70600 IF NOT(I='S) THEN ORD[X]←I;
70700 END;
70800 IF C1='UNKNOWN THEN C1=T;
70900 IF C3='UNKNOWN THEN C3=T;
71000 I←NIL; II←NIL;
71100 LIMINF←LIMINFBASE;
71200 TAGF1 ← F1;
71300 TAGF7 ← F7;
71400 FOR NEW T2 ← 1 TO LENGTH(ORD[2]) DO BEGIN
71500 F2 ← ORD[2,T2];
71600 IF GREATERP(MSGLEVEL,0) THEN
71700 PRINT <2,'T2,T2,'F2,F2>;
71800 IF GREATERP(MSGLEVEL,49) THEN
71900 PRINT<'L,L,'RELATEDFUNCTIONS,RELATEDF,'ORD,ORD>;
72000 IF FOR NEW X← 2 TO NEX+1; AND
72100 MAT(EXAMPLE[X,1],F2) THEN
72200 FOR NEW T3 ← 1 TO LENGTH(ORD[3]) DO BEGIN
72300 F3←ORD[3,T3];
72400 IF GREATERP(MSGLEVEL,1) THEN
72500 PRINT <3,'T3,T3,'F3,F3>;
72600 IF FOR NEW X←2 TO NEX+1; AND
72700 MAT3(EXAMPLE[X,1],F3) THEN
72800 FOR NEW T1←1 TO LENGTH(ORD[1]) DO BEGIN
72900 F1← ORD[1,T1];
73000 IF GREATERP(MSGLEVEL,2) THEN PRINT <1,'T1,T1,'F1,F1>;
73100 IF FOR NEW X←2 TO NEX+1; AND
73200 MAT2(EXAMPLE[X,1],F1,F2,F3) AND
73300 (TAGF1 OR GOODEX=NIL OR F1(F2 (GOODEX[1,1]),
73400 F3(GOODEX[1,2]))=C1) THEN
73500 FOR NEW T5←1 TO LENGTH(ORD[5]) DO BEGIN
73600 F5 ← ORD[5,T5];
73700 IF GREATERP(MSGLEVEL,4) THEN PRINT<5,'T5,T5,'F5,F5>;
73800 IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F5) THEN
73900 FOR NEW T6←1 TO LENGTH(ORD[6]) DO BEGIN
74000 F6 ← ORD[6,T6];
74100 IF GREATERP(MSGLEVEL,5) THEN PRINT <6,'T6,T6,'F6,F6>;
74200 IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F6) THEN
74300 FOR NEW T4← 1 TO LENGTH(ORD[4]) DO BEGIN
74400 F4←ORD[4,T4];
74500 IF GREATERP(MSGLEVEL,6) THEN PRINT <4,'T4,T4,'F4,F4>;
74600 IF FOR NEW X←2 TO NEX+1; AND
74700 MAT2(EXAMPLE[X,1],F4,F5,F6) AND
74800 (LENGTH(ORD[4])=1 OR C2=NIL OR C2=UNKNOWN
74900 OR F4(F5(L),F6(M))=C2) THEN
75000 FOR NEW T8←1 TO LENGTH(ORD[8]) DO BEGIN
75100 F7←ORD[7,T7];
75200 IF(GREATERP(MSGLEVEL,6)) THEN PRINT <7,'T7,T7,'F7,F7>;
75300 IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F7) THEN
75400 FOR NEW T9←1 TO LENGTH(ORD[9]) DO BEGIN
75500 F9 ← ORD[9,T9];
75600 IF GREATERP(MSGLEVEL,7) THEN PRINT <9,'T9,T9,'F9,F9>;
75700 IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F9) THEN
75800 FOR NEW T7←1 TO LENGTH(ORD[7]) DO BEGIN
75900 F7←ORD[7,T7];
76000 IF GREATERP(MSGLEVEL,8) THEN PRINT <7,'T7,T7,'F7,F7 >;
76100 IF FOR NEW X←2 TO NEX+1; AND
76200 MAT2(EXAMPLE[X,1],F7,F8,F9) AND
76300 (TAGF7 OR GOODEX2=NIL OR
76400 F7(F8(GOODEX2[1,1]),F9(GOODEX2[1,2]))=C3) THEN
76500 FOR NEW T11←1 TO LENGTH(ORD[11]) DO BEGIN
76600 F11←ORD[11,T11];
76700 IF GREATERP(MSGLEVEL,9) THEN PRINT <11,'T11,T11,'F11,F11>;
76800 IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F11) THEN
76900 FOR NEW T12←1 TO LENGTH(ORD[12]) DO BEGIN
77000 F12←ORD[12,T12];
77100 IF GREATERP(MSGLEVEL,10) THEN PRINT <12,'T12,T12,'F12,F12>;
77200 IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F12) THEN
77300 FOR NEW T10←1 TO LENGTH(ORD[10]) DO BEGIN
77400 F10←ORD[10,T10];
77500 IF GREATERP(MSGLEVEL,11) THEN PRINT <12,'T12,T12,'F12,F12>;
77600 IF FOR NEW X←2 TO NEX+1; AND MAT2(EXAMPLE[X,1],F10,F11,F12) THEN
77700 FOR NEW T15← 1 TO LENGTH(ORD[15]) DO BEGIN
77800 F15← ORD[15,T15];
77900 IF GREATERP(MSGLEVEL,12) THEN PRINT <15,'T15,T15,'F15,F15>;
78000 IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F15) THEN
78100 FOR NEW F16←1 TO LENGTH(ORD[16]) DO BEGIN
78200 F16←ORD[16,T16];
78300 IF GREATERP(MSGLEVEL,13) THEN PRINT <16,'T16,T16,'F16,F16>;
78400 IF FOR NEW X←2 TO NEX+1; AND MAT3(EXAMPLE[X,1],F16) THEN
78500 FOR NEW T14←1 TO LENGTH(ORD[14]) DO BEGIN
78600 F14←ORD[14,T14];
78700 IF GREATERP(MSGLEVEL,14) THEN PRINT <14,'T14,T14,'F14,F14>;
78800 IF FOR NEW X←2 TO NEX+1; AND MAT2(EXAMPLE[X,1],F14,F15,F16) THEN
78900 FOR NEW T18←1 TO LENGTH(ORD[18]) DO BEGIN
79000 F18←ORD[18,T18];
79100 IF GREATERP(MSGLEVEL,15) THEN PRINT <18,'T18,T18,'F18,F18>;
79200 IF FOR NEW X←2 TO NEX+1; AND MAT(EXAMPLE[X,1],F18) THEN
79300 FOR NEW T19←1 TO LENGTH(ORD[19]) DO BEGIN
79400 F19←ORD[19,T19];
79500 IF GREATERP(MSGLEVEL,16) THEN PRINT <19,'T19,T19,'F19,F19>;
81400 IF I THEN PRINTSTR '" HOORAY, HOORAY
81500 SUCCESS";
81600 RETURN I;
81999 END UNTIL I
82000 END UNTIL I
82100 END UNTIL I
82200 END UNTIL I
82300 END UNTIL I
82400 END UNTIL I
82500 END UNTIL I
82600 END UNTIL I
82700 END UNTIL I
82800 END UNTIL I
82900 END UNTIL I
83000 END UNTIL I
83100 END UNTIL I
83200 END UNTIL I
83300 END UNTIL I
83400 END UNTIL I
83500 END UNTIL I;
83600 IF GREATERP(MSGLEVEL,0) THEN
83700 PRINT <'F1TOF19,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,
83800 F11,F12,F13,F14,F15,F16,F17,F18,F19,'C1234,C1,C2,
83900 C3,C4>;
84000 KNOWNF ← FN2 CONS KNOWNF;
84100 TARG ← GET('FN,'TARGS) CONS TARG;
84200 NARG← N CONS NARG;
84300 TRE ← GET('FN,'TRES) CONS TRE;
84400 BA2 ← FN2 CONS BA2;
84500 IF GREATERP(MSGLEVEL,35) THEN PRINT <'KNOWNF,KNOWNF,
84600 'RELATESDF,RELATEDF,'TARG,TARG,'NARG,NARG,'TRE,
84700 TRE,'BA2,BA2>;
84800 PUTPROP(FN2,2,NARGS);
84900 PUTPROP(FN2,IHOLD,TARGS);
85000 PUTPROP(FN2,'ANY,TRES);
85100 FINALIZE2();
85200 FOR NEW J←1 TO 19 DO PUTPROP(FN2,11,P2F[J]);
85300 RETURN FN2;
85400 END;
99600 END.